(define (compose f g)
  (lambda (x) (f (g x))))

(define (repeat f n) 
  (if (< n 1) 
    (lambda (x) x) 
    (compose f (repeat f (- n 1))))) 

(define dx 0.00001)

(define (smooth f)
  (lambda (x) (/ (+ (f (+ x dx))
                    (f x)
                    (f (- x dx)))
                 3) ))

(define (n-smooth f n)
  ((repeat smooth n) f))
